int *p=a和int *p=&a的区别 您所在的位置:网站首页 sartopore2和sartobran p的区别 int *p=a和int *p=&a的区别

int *p=a和int *p=&a的区别

#int *p=a和int *p=&a的区别| 来源: 网络整理| 查看: 265

前言: 本文乃大一初学时写作,现在已经毕业两年多换方向了,成了前端码农,真正底层原理我现在也忘光光了,建议大家多看看多研究其他大佬的分析,别全听信本文。(也别因为这篇文章关注我了)

  指针变量用来存放指针(或者可以理解成地址)。而 & 则是取地址运算符,因此给指针变量赋值的方式一般是把变量的地址取出来,然后付给对应类型的指针变量:

int a; int* p = &a;

上面的代码也可以写成:

int a; int* p; p = &a;

  需要注意的是, int* 是指针变量的类型,而后面的 p 才是变量名,用来存储地址,因此地址 &a 是赋值给 p 而不是 *p 的。   所以,int *p中的 p 必须赋予一个地址,如果不是地址,编译器则会报错(实在不能理解的话就把地址当做一个新的类型,类型不同肯定会报错嘛 ╮( ̄▽ ̄)╭)   当然,如果 a 代表的是数组首地址,那就另说了。下面几个例子方便理解: int *p=a;

#include int main() { int a = 123; int *p=a; printf("%d\n", p); return 0; }

编译结果: 在这里插入图片描述 int *p=&a;

#include int main() { int a = 123; int *p=&a; printf("%d\n", *p); return 0; }

结果: 在这里插入图片描述 a为数组首地址时

#include int main() { int a[3] = {1,2,3}; int *p=a; printf("%d\n", *p); //输出 a[0] return 0; }

结果: 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有